"""
题目 2：多进程计算（40 分）
题目描述：编写一个程序，使用多进程计算斐波那契数列。程序接收一个整数 n 作为参数，使用多进程并行计算斐波那契数列的前 n 项。
评分标准：
正确使用多进程（10 分）
斐波那契数列计算正确（10 分）
进程间通信正确（10 分）
结果合并正确（10 分）
"""
import multiprocessing
def fibonacci(n, queue):
    a, b = 0, 1
    result = []
    for _ in range(n):
        result.append(a)
        a, b = b, a + b
    queue.put(result)


def main(n):
    processes = []
    queue = multiprocessing.Queue()

    # 假设我们使用4个进程并行计算
    chunk_size = n // 4
    remainders = n % 4

    start = 0
    for i in range(4):
        size = chunk_size + (1 if i < remainders else 0)
        p = multiprocessing.Process(target=fibonacci, args=(size, queue))
        processes.append(p)
        p.start()
        start += size

    for p in processes:
        p.join()

    final_result = []
    while not queue.empty():
        final_result.extend(queue.get())

    print(f"Fibonacci sequence up to {n}: {final_result[:n]}")

if __name__ == "__main__":
    main(10)